home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib06.dsk / NFL RANKING SYSTEM.bas < prev    next >
BASIC Source File  |  2023-02-26  |  7KB  |  143 lines

  1. 10  REM  **************************
  2. 20  REM  *  NFL RANKING SYSTEM    *
  3. 30  REM  *  BY JOSEPH M. FEEHAN   *
  4. 40  REM  *   APPLESOFT BASIC      *
  5. 50  REM  *  COPYRIGHT (C) 1981    *
  6. 60  REM  *  BY MICRO-SPARC INC    *
  7. 70  REM  **************************
  8. 90  ONERR  GOTO 1300
  9. 100  DIM R(28,3)
  10. 110  DIM N$(28)
  11. 120 D$ =  CHR$(4)
  12. 130  PRINT D$;"OPEN NFL.DATA"
  13. 140  PRINT D$;"READ NFL.DATA"
  14. 150  FOR I = 1 TO 28
  15. 160  INPUT R(I,1): INPUT R(I,2): INPUT R(I,3)
  16. 170  NEXT I
  17. 180  PRINT D$;"CLOSE NFL.DATA"
  18. 190  PRINT D$;"OPEN NFL.NAMES"
  19. 200  PRINT D$;"READ NFL.NAMES"
  20. 210  FOR I = 1 TO 28
  21. 220  INPUT N$(I): NEXT I
  22. 230  PRINT D$;"CLOSE NFL.NAMES"
  23. 240  FOR I = 1 TO 28:R(I,0) = I: NEXT 
  24. 250  HOME : VTAB 5
  25. 260  PRINT "    ***** NFL FOOTBALL RATINGS *****"
  26. 270  PRINT : PRINT : PRINT "1 - UPDATE"
  27. 280  PRINT "2 - PREDICTION": PRINT "3 - DISPLAY": PRINT "4 - EXIT"
  28. 290  PRINT : PRINT : PRINT : INPUT "CHOOSE ONE AND HIT RETURN ";Z$:Z =  VAL(Z$)
  29. 300  IF Z <1  OR Z >4  THEN  PRINT : CALL 64482: INVERSE : PRINT "PLEASE TRY AGAIN": NORMAL : GOTO 290
  30. 310  IF Z = 4  THEN 860
  31. 320  IF Z = 3  THEN 690
  32. 330  HOME : VTAB 5
  33. 340  FOR I = 1 TO 14
  34. 350  PRINT I;: HTAB 4: PRINT N$(I);: HTAB 20: PRINT I +14;" ";N$(I +14)
  35. 360  NEXT I
  36. 370  POKE 34,20:A = 1:B = 0
  37. 380  PRINT : IF Z = 1  THEN  PRINT : INPUT "GIVE ME TWO TEAMS TO UPDATE ";A$,B$:A =  VAL(A$):B =  VAL(B$)
  38. 390  IF Z = 2  THEN  PRINT : INPUT "WHICH TWO TEAMS SHALL I PREDICT FOR? ";A$,B$:A =  VAL(A$):B =  VAL(B$)
  39. 400  HOME 
  40. 410  IF A <1  OR A >28  THEN  CALL 64482: INVERSE : PRINT "BAD INPUT - PLEASE TRY AGAIN": NORMAL : GOTO 380
  41. 420  IF B <1  OR B >28  THEN  CALL 64482: INVERSE : PRINT "BAD INPUT - PLEASE TRY AGAIN": NORMAL : GOTO 380
  42. 430  IF A = B  THEN  INVERSE : CALL 64482: INVERSE : PRINT "A TEAM CANNOT PLAY ITSELF": NORMAL : GOTO 380
  43. 440 X = (R(A,1) -R(B,2))/2
  44. 450 SA = X +21
  45. 460 X = (R(B,1) -R(A,2))/2
  46. 470 SB = X +21
  47. 480  IF Z = 2  THEN  PRINT N$(A);: HTAB 17: PRINT  INT(SA): PRINT N$(B);: HTAB 17: PRINT  INT(SB)
  48. 490  IF Z = 2  THEN  INPUT "ANOTHER PREDICTION (Y/N)? ";B$
  49. 500  IF B$ = "N"  OR B$ = "NO"  THEN B$ = "FIX": TEXT : HOME : GOTO 250
  50. 510  IF B$ = "Y"  OR B$ = "YES"  THEN B$ = "FIX": TEXT : HOME : GOTO 380
  51. 520  IF Z = 2  THEN  HOME : CALL 64482: INVERSE : PRINT "PLEASE TRY AGAIN": NORMAL : GOTO 490
  52. 530  PRINT "GIVE ME ";N$(A);"'S SCORE";: HTAB 32: INPUT "";S1
  53. 540  PRINT "GIVE ME ";N$(B);"'S SCORE";: HTAB 32: INPUT "";S2
  54. 550  HOME : PRINT N$(A);: HTAB 20: PRINT S1: PRINT N$(B);: HTAB 20: PRINT S2: PRINT 
  55. 560  INPUT "DO YOU WISH TO CANCEL UPDATE (Y/N)? ";B$: IF B$ < >"Y"  AND B$ < >"N"  THEN  CALL 64482: GOTO 550
  56. 570  IF B$ = "Y"  THEN B$ = "FIX": GOTO 650
  57. 580  IF B$ = "N"  THEN B$ = "FIX"
  58. 590 R(A,1) = R(A,1) +((S1 -SA)/4):R(B,2) = R(B,2) -((S1 -SA)/4)
  59. 600 R(A,1) =  INT(R(A,1) +.5):R(B,2) =  INT(R(B,2) +.5)
  60. 610 R(B,1) = R(B,1) +((S2 -SB)/4):R(A,2) = R(A,2) -((S2 -SB)/4)
  61. 620 R(B,1) =  INT(R(B,1) +.5):R(A,2) =  INT(R(A,2) +.5)
  62. 630 R(A,3) = R(A,1) +R(A,2)
  63. 640 R(B,3) = R(B,1) +R(B,2)
  64. 650  HOME : INPUT "ANOTHER UPDATE (Y/N)? ";B$
  65. 660  IF B$ = "N"  OR B$ = "NO"  THEN  TEXT : HOME : GOTO 250
  66. 670  IF B$ = "Y"  OR B$ = "YES"  THEN  HOME :B$ = "FIX": GOTO 380
  67. 680  CALL 64482: GOTO 650
  68. 690 J = 0:L = 0:L1 = 0
  69. 700  HOME : VTAB 3: PRINT "RANK TOTAL TEAM";: HTAB 27: PRINT "(OFF-DEF)": PRINT "---------------------------------------"
  70. 710  POKE 34,4
  71. 720  FOR I = 1 TO 28: FOR H = 1 TO 28
  72. 730 L = R(H,3): IF R(H,0) = 999  THEN 750
  73. 740  IF L > = L1  THEN J = H:L1 = L
  74. 750  NEXT H
  75. 760 R(J,0) = 999
  76. 770  HTAB 2: IF I <10  THEN  HTAB 3
  77. 780  PRINT I;: HTAB 7: IF R(J,3) <100  THEN  HTAB 8
  78. 790  PRINT R(J,3);: HTAB 12: PRINT N$(J);: HTAB 28: PRINT "(";R(J,1);"-";R(J,2);")"
  79. 800  IF I = 18  THEN  PRINT : INPUT "HIT RETURN FOR BOTTOM 10 OR M FOR MENU ";A$: HOME 
  80. 810  IF A$ = "M"  THEN  TEXT :I = 29: GOTO 820
  81. 820 L1 = 0: NEXT I
  82. 830  IF A$ < >"M"  THEN  PRINT : INPUT "HIT RETURN TO SEE MENU AGAIN ";A$
  83. 840  FOR I = 1 TO 28:R(I,0) = I: NEXT I
  84. 850  TEXT : HOME :A$ = "": GOTO 250
  85. 860  HOME : VTAB 8
  86. 870  INPUT "DID YOU UPDATE ANY RECORDS (Y/N)? ";A$
  87. 880  PRINT 
  88. 890  IF A$ < >"Y"  AND A$ < >"YES"  AND A$ < >"N"  AND A$ < >"NO"  THEN  CALL 64482: INVERSE : PRINT "PLEASE ANSWER THE QUESTION": NORMAL : GOTO 870
  89. 900  IF A$ = "N"  OR A$ = "NO"  THEN  GOTO 1150
  90. 910  IF A$ = "Y"  OR A$ = "YES"  THEN  HOME : VTAB 5: HTAB 6: INVERSE : PRINT "NOW SAVING NEW DATA TO DISK": NORMAL 
  91. 920  PRINT D$;"UNLOCK NFL.DATA"
  92. 930  PRINT D$;"OPEN NFL.DATA"
  93. 940  PRINT D$;"DELETE NFL.DATA"
  94. 950  PRINT D$;"OPEN NFL.DATA"
  95. 960  PRINT D$;"WRITE NFL.DATA"
  96. 970  FOR I = 1 TO 28
  97. 980  PRINT R(I,1): PRINT R(I,2): PRINT R(I,3)
  98. 990  NEXT I
  99. 1000  PRINT D$;"CLOSE NFL.DATA"
  100. 1010  PRINT D$;"LOCK NFL.DATA"
  101. 1020  PRINT "WRITE TO DISK IS COMPLETE."
  102. 1030  HOME 
  103. 1040  VTAB 8: PRINT "ENTER TODAY'S DATE FOR THE BACKUP FILE ";: INPUT A$
  104. 1050  IF A$ = ""  THEN  CALL 64482: PRINT : PRINT : PRINT "NULL INPUT NOT ACCEPTABLE -- PLEASE TRY AGAIN.": GOTO 1040
  105. 1055  INPUT "INSERT BACKUP DISK AND HIT RETURN WHEN  READY ";B$
  106. 1060 D$ =  CHR$(4)
  107. 1070 B$ = "DATA.":B$ = B$ +A$
  108. 1080  HOME : VTAB 5: HTAB 9: INVERSE : PRINT "NOW SAVING BACKUP FILE": NORMAL 
  109. 1090  PRINT D$;"OPEN";B$
  110. 1100  PRINT D$;"WRITE";B$
  111. 1110  FOR I = 1 TO 28
  112. 1120  PRINT R(I,1): PRINT R(I,2): PRINT R(I,3)
  113. 1130  NEXT I
  114. 1140  PRINT D$;"CLOSE";B$
  115. 1150  HOME : VTAB 5: INPUT "DO YOU WANT TO PRINT THE RANKINGS? ";A$: IF A$ < >"N"  AND A$ < >"NO"  AND A$ < >"Y"  AND A$ < >"YES"  THEN  CALL 64482: GOTO 1150
  116. 1160  IF A$ = "N"  OR A$ = "NO"  THEN  TEXT : PRINT : PRINT "BE SEEING YOU": END 
  117. 1170 J = 0:L = 0:L1 = 0: PRINT D$;"PR#1"
  118. 1180  PRINT : HTAB 7: PRINT "RANK TOTAL TEAM";: HTAB 34: PRINT "(OFF-DEF)": HTAB 7: PRINT "---------------------------------------"
  119. 1190  FOR I = 1 TO 28: FOR H = 1 TO 28
  120. 1200 L = R(H,3): IF R(H,0) = 999  THEN 1220
  121. 1210  IF L > = L1  THEN J = H:L1 = L
  122. 1220  NEXT H
  123. 1230 R(J,0) = 999
  124. 1240  HTAB 9: IF I <10  THEN  HTAB 10
  125. 1250  HTAB 7: PRINT I;: HTAB 14: IF R(J,3) <100  THEN  HTAB 15
  126. 1260  PRINT R(J,3);: HTAB 19: PRINT N$(J);: HTAB 35: PRINT "(";R(J,1);"-";R(J,2);")"
  127. 1270 L1 = 0: NEXT I
  128. 1280  PRINT D$;"PR#0"
  129. 1290  PRINT : PRINT "BE SEEING YOU.": TEXT : END 
  130. 1300  PRINT D$;"PR#0": TEXT : HOME : VTAB 2: NORMAL 
  131. 1310 I =  PEEK(222): PRINT "ERR: ";: IF I = 0  OR I >15  THEN J = 53856 +I +(I = 255) * -1: GOTO 1330
  132. 1320 J = 43377 + PEEK(43583 +I)
  133. 1330 K =  PEEK(J): PRINT  CHR$(K);: IF K <192  THEN J = J +1: GOTO 1330
  134. 1340  PRINT " @ LINE "; PEEK(218) +256 * PEEK(219)
  135. 1350  VTAB 7: PRINT "THIS PROGRAM HAS JUST BLOWN UP FOR THE  REASON SHOWN ON THE FIRST LINE ABOVE."
  136. 1360  PRINT "ANY UPDATES YOU MADE PRIOR TO THE ERROR ARE STILL IN MEMORY AND CAN BE SAVED."
  137. 1370  PRINT : PRINT "AT THIS POINT, YOU CAN RETURN TO THE    MAIN MENU, SAVE YOUR DATA, OR EXIT THE  PROGRAM AND START OVER."
  138. 1380  PRINT : PRINT "ENTER 'M' TO RETURN TO MAIN MENU": PRINT "      'S' TO SAVE YOUR DATA": PRINT "      'Q' TO EXIT THE PROGRAM"
  139. 1390  INPUT A$
  140. 1400  IF A$ = "M"  THEN A$ = "": GOTO 250
  141. 1410  IF A$ = "S"  THEN 920
  142. 1420  IF A$ = "Q"  THEN  PRINT : PRINT "GOODBYE": TEXT : END 
  143. 1430  CALL 64482: PRINT : INVERSE : PRINT "PLEASE TRY AGAIN": NORMAL : PRINT : GOTO 1380